import axios from 'axios'

// 创建axios实例，用于发送HTTP请求
const api = axios.create({
  // 设置请求的基础URL，所有请求都会以这个地址作为前缀
  baseURL: 'http://127.0.0.1:8000/api/v1',
  // 设置请求超时时间，单位毫秒，以下的设置为10秒
  timeout: 10000,
  // 设置默认请求头，这里设置请求为JSON格式
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 发送请求之前，可以添加一些逻辑，如添加请求头、参数加密等
    const token = localStorage.getItem('access_token')
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  error => {
    // 对请求错误进行处理
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    // 对响应数据进行处理
    return response.data
  },
  error => {
    // 对响应错误进行处理
    if(error.response && error.response.status === 401) {
      // token过期或无效，清除掉本地存储并跳转到登录页
      localStorage.removeItem('access_token')
      localStorage.removeItem('user_info')
      window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

// 把api实例挂载到全局
window.$api = api
export default api

